Error detection and correction techniques are used to reliably transmit information over unreliable channels. Such techniques are used in a variety of systems including telecommunications systems and data storage devices. An example of such a technique is forward error correction in which the sender of information encodes the information in a redundant manner using an error-correcting code. At the receiver end the message is then decoded. The redundancy allows the receiver to detect and correct a limited number of errors in the message. Improvements in error correction are desirable.